home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C / Applications / MacPerl 5.1.3 / Mac_Perl_513_src / MacPerl5 / Demo / UPPDB < prev    next >
Encoding:
Text File  |  1994-07-09  |  16.0 KB  |  13 lines  |  [TEXT/MPS ]

  1. a· (4ïn}„"¸∫±-&    QI:0ÙÀ«≤• È ‰ « ∂ ô î ` V = * : 3 , $ 
  2. œ files (necessary to flush buffers)    // This implementation is not nice, but who cares ?    // In case you wonder, _iob is defined in <stdio.h>    for (i = 0; _iob+i<_lastbuf; i++)        fflush(_iob+i);    for (i = 0; _iob+i<_lastbuf; i++)        fclose(_iob+i);    // Close all files    for (i = 0; i<FD_SETSIZE; ++i)        close(i);    while (PerlExitCnt)        PerlExitFn[--PerlExitCnt]();    UseResFile(gAppFile);    reenter();        open("Dev:Console", O_RDONLY);    open("Dev:Console", O_WRONLY);    open("Dev:Console", O_WRONLY);        fopen("Dev:Console", "r");    fopen("Dev:Console", "w");    fopen("Dev:Console", "w");}enum {    extractDone            = -4,    extractDir            = -3,    extractCpp            = -2,    extractDebug         = -1};typedef char * (*ArgExtractor)(void * data, int index);pascal void RunScript(ArgExtractor extractor, void * data){    int        ArgC;    short        resFile;    Handle    libs;    Str255    lib;    char    *    res;    int        i;    PtrToHand("PERLLIB", &libs, 8);        resFile = CurResFile();    UseResFile(gPrefsFile);        for (ArgC = 1; ; ++ArgC) {        GetIndString(lib, LibraryPaths, ArgC);                if (!lib[0])            break;                    if (ArgC > 1)            PtrAndHand(",", libs, 1);                PtrAndHand(lib+1, libs, lib[0]);    }        UseResFile(resFile);        if (PerlEnviron[1])        DisposePtr(PerlEnviron[1]);        PerlEnviron[1] = NewPtr(GetHandleSize(libs)+1);    BlockMove(*libs, PerlEnviron[1], GetHandleSize(libs));    PerlEnviron[1][GetHandleSize(libs)] = 0;    DisposeHandle(libs);        ArgC = 1;        {        char        path[256];            strcpy(path, extractor(data, extractDir));        chdir(path);    }        if ((res = extractor(data, extractDebug)) && *res == 'y')        PerlArgs[ArgC++] = "-d";    if ((res = extractor(data, extractCpp)) && *res == 'y')        PerlArgs[ArgC++] = "-P";    if (res = extractor(data, 1)) {        if (gPerlPrefs.checkType && !gPseudoFile)             PerlArgs[ArgC++] = "-x";                PerlArgs[ArgC++] = res;            for (i=2; PerlArgs[ArgC] = extractor(data, i); ++i, ++ArgC);    }        extractor(data, extractDone);        UseResFile(gAppFile);        gRunningPerl     =  true;    PerlQuit            =    0;    ShowWindowStatus();        signal(SIGINT, exit);        if (!setjmp(ExitPerl))                     run_perl(ArgC, PerlArgs, PerlEnviron);        CleanupPerl();    gRunningPerl = false;        if (gScriptFile != gAppFile) {        CloseResFile(gScriptFile);                gScriptFile = gAppFile;    }        ShowWindowStatus();    for (i=1; PerlArgs[i]; ++i)        DisposPtr(PerlArgs[i]);    switch (PerlQuit) {    case 2:#ifdef RUNTIME    case 1:#endif        gQuitting = true;    }}char * AEExtractor(void * data, int index){    DescType            type;    Size                size;    Boolean            arg;    AppleEvent *     event;    FSSpec            spec;    AEKeyword        keywd;    static AEDesc    params = {'\?\?\?\?', nil};    char *            retarg;    char *            path;        event = (AppleEvent *) data;        switch (index) {    case extractDone:        gRuntimeScript = nil;                if (params.dataHandle)ÜóPÎ∞ShutDwnProcShutDownVBLProcRetraceSGDataProc,SGModalFilterProc,SGGrabProc,SGGrabCompleteProc,SGDisplayProc,SGCompressProc,SGCompressCompleteProc,SGAddFrameProc,SGTransferFrameProc,SGGrabCompressCompleteProc,SGDisplayCompressProc,VdigIntProc,SCModalFilterProc,SCModalHookProcQuickTimeComponentsPPCFilterProc,PPCCompProcPPCToolBoxMenuDefProc,MenuBarDefProc,MBarHookProc,MenuHookProcMenusOSErrProc,PtrProc,BooleanProcMacTCPCommonTypesIconActionProc,IconGetterProcIconsFileTransferDefProc,FileTransferReadProc,FileTransferWriteProc,FileTransferSendProc,FileTransferReceiveProc,FileTransferEnvironsProc,FileTransferNotificationProc,FileTransferChooseIdleProcFileTransfersGetSpecificFilterProcEPPCENETCompletionProc,ENETCompletionProcENETControlDefProc,ControlActionProcControlsComponentRoutineProcComponentsTipFunctionProcBalloonsATalkTransitionEventProc,MPPCompletionProc,ATPCompletionProc,XPPCompletionProc,AttnRoutineProc,MPPProtocolHandlerProc,DDPSocketListenerProc,MPPProtocolHandlerProc,DDPSocketListenerProcAppleTalkMatchAliasFilterProcAliasesOSLAccessorProc,OSLCompareProc,OSLCountProc,OSLDisposeTokenProc,OSLGetMarkTokenProc,OSLGetErrDescProc,OSLMarkProc,OSLAdjustMarksProcAEObjectsADSPConnectionEventProc,ADSPConnectionEventProc,ADSPCompletionProcADSPFÚ…æsh¯Ãæ~wÙÌ⁄”≠•ìãKE83 Ù ‰ é â ] W 6 .   S G A > 
  3. Â
  4. ÷
  5. Œ
  6. §    ≥    ™    †    õ    â    Ñ    :    0        ™•Ñ{◊œ›ÿ∑%∑êòTfi}≥∏
  7. qI"qIFqH¸lqHÙîqH¯√}Øt}≠ÙN}≠‰s}¨‘±,†}≥ò!+x=+<Y}¨¥}ƨ}Ø}Ø}Ø}Üá–Ά f†Directory "tyrathect:Development:Others:Pathologist" > "{ShellDirectory}"MPW.Errors ≥ Dev:StdOut              || Alert < "{ShellDirectory}"MPW.ErrorstÜà`Î0 iÃ}±Ñ}±Ä+\ÜâÎ0 j`}≤(}≤+\Üâ0Î
  8.   k0
  9. ÇÜâ`Î0ËqHîqHåqHàˇˇqHÑ∂€m∂ÜâÄο dà(Get {headerStyle} -m -d Help -k "MacApp411CPlusHelp" -width 60 -dfl "{HelpDirectory}"Help_Files || (beep ;)) ∑∑ "{HelpDirectory}"Help; Open "{HelpDirectory}"Help;€m∂€m∂€m∂€m∂Üâ∞Î @ hT}∞8}∫∞ScDˇˆ≥àl}ظ}∞∂€m∂€m∂ÜäpÎp k»}≥Lh |qOK}≥T∞¿rà}≥t
  10. \rà}≥`∞x¿⁄àh |qÄÅäůÜä∞Î0qH¨qH§qH†ˇˇqHúˇˇˇˇˇˇˇˇ∂€m∂Üã Î0 e§Mount Project…/µå©@´  e§ÜãPΠ`|¿0?ˇˇˇ˛Å˛Å˛A¸A¸!¯¿¿?¯¸¸ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛¸¸?¯¿m∂€m∂€m∂€m∂€ÜãÄΠ hú
  11. Äġˇm∂Ç0`Üã‡Î P iÿ}±òÅ¿¿*ı>tˇàdShow Invisibles∂€m∂€m∂€ÜåΠ` gÿ Undo    "{active}"Cut   § "{active}"Copy  § "{active}"Paste § "{active}"Clear    § "{active}"help `catenate "{active}.§"`Beep/CheckWindowIn "{Active}" && Close -c "{Active}"CheckWindowOut "{Active}"èFind \•@\:/•∞/ "{Active}"; Justify -r 80 "{Active}".§>"{MPW}"MPW.Justify; Catenate "{MPW}"MPW.Justify > "{Active}".§; Delete "{MPW}"MPW.JustifyrBegin; Find \•[ ∂t]*File\ "{Worksheet}"; Find !0 "{Worksheet}UDPNotifyProc,UDPIOCompletionProcUDPPBTSMTEPreUpdateProc,TSMTEPostUpdateProcTSMTETimerProcTimerHighHookProc,CaretHookProc,EOLHookProc,WidthHookProc,NWidthHookProc,TextWidthHookProc,DrawHookProc,HitTestHookProc,TEFindWordProc,TERecalcProc,TEDoTextProc,WordBreakProc,TEClickLoopProcTextEditTerminalSendProc,TerminalBreakProc,TerminalCacheProc,TerminalSearchCallBackProc,TerminalClikLoopProc,TerminalEnvironsProc,TerminalChooseIdleProc,TerminalToolDefProcTerminalsTCPNotifyProc,TCPIOCompletionProcTCPPBDlgHookProc,FileFilterProc,DlgHookYDProc,ModalFilterYDProc,FileFilterYDProc,ActivateYDProcStandardFileSIInterruptProc,SICompletionProcSoundInputSndCompletionProc,SndCallBackProc,FilePlayCompletionProc,SndDoubleBackProcSoundSlotIntServiceProcSlotsResErrProcResourcesQDTextProc,QDLineProc,QDRectProc,QDRRectProc,QDOvalProc,QDArcProc,QDPolyProc,QDRgnProc,QDBitsProc,QDCommentProc,QDTxMeasProc,QDGetPicProc,QDPutPicProc,QDOpcodeProc,QDJShieldCursorProc,ColorSearchProc,ColorComplementProc,DeviceLoopDrawingProcQuickdrawPrIdleProc,PItemProc,PDlgInitProcPrintingSleepQProcPowerDeferredTaskProc,DeferredTaskProcOSUtilsOSACreateAppleEventProc,OSASendProc,OSAActiveProcOSANMProcNotificationMovieRgnCoverProc,MovieProgressProc,MovieDrawingCompleteProc,TrackTransferProc,QTCallBackProc,MoviePreviewCallOutProc,MoviesErrorProc,TextMediaProc,MCActionFilterProc,MCActionFilterWithRefConProcMoviesICMPEchoNotifyProcMiscIPPBGrowZoneProc,PurgeProc,UserFnProcMemoryListSearchProc,ListClickLoopProc,ListDefProcListsICMDataProc,ICMFlushProc,ICMCompletionProc,ICMProgressProc,StdPixProc,ICMAlignmentProcImageCompressionSelectorFunctionProcGestaltEquIOCompletionProc,IOCompletionProcFilesGNEFilterProcEventsExpModalFilterProc,ExpDlgHookProc,FormatIOProc,EditionOpenerProcEditionsDMNotificationProcDisplaysSoundProc,ModalFilterProc,UserItemProcDialogsControlPanelDefProcDevicesADBCompletionProc,ADBDeviceDriverProc,ADBServiceRoutineProc,ADBInitProc,ADBCompletionProc,ADBDeviceDriverProc,ADBServiceRoutineProcDeskBusDBCompletionProc,DBQueryDefProc,DBStatusProc,DBResultHandlerProcDatabaseAccessDialogHookProc,NameFilterProc,ZoneFilterProcCTBUtilitiesConnectionToolDefProc,ConnectionSearchCallBackProc,ConnectionCompletionProc,ConnectionChooseIdleProcConnectionsAEIdleProc,AEFilterProc,AEEventHandlerProc,AECoerceDescProc,AECoercePtrProcAppleEventsEnumResultProc,ResultProc,ResultProc2ProcAddressXlationˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ